From 7a6d294eb96ce934efbd8c3ab517d9ddd03c0089 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 11 Mar 2010 08:09:37 +0000 Subject: [PATCH] Fix 21020:3198a2e81d38 This has a pretty serious bug. ioapic_to_iommu() gets returned drhd->iommu. However, drhd->iommu isn't allocated until part of iommu_setup(), which is called after enable_x2apic(). Has this ever worked? Signed-off-by: Alex Williamson --- xen/drivers/passthrough/vtd/intremap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrough/vtd/intremap.c index 0b3d95827b..fcab930b61 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -134,7 +134,7 @@ int iommu_supports_eim(void) /* We MUST have a DRHD unit for each IOAPIC. */ for ( apic = 0; apic < nr_ioapics; apic++ ) - if ( !ioapic_to_iommu(IO_APIC_ID(apic)) ) + if ( !ioapic_to_drhd(IO_APIC_ID(apic)) ) return 0; if ( list_empty(&acpi_drhd_units) ) -- 2.30.2